Fuzzy(Non repeatable) read
トランザクションの処理中に、他のトランザクションでcommitしたUPDATEが見えてしまう
code:sql
BEGIN;
SELECT name FROM vtuber WHERE id = 1; -- 月ノ美兎
-- ここで別のトランザクションによってid=1のnameがUPDATEされてcommitされる
SELECT name FROM vtuber WHERE id = 1; -- 月野美兎
これを防ぐには?
トランザクションが全て終了するまで上記別のトランザクションで変更された処理の変更前データを保持しておく実装がRDBMS側に必要
このような実装は各RDBMSに実装されていて、ユーザーとしてはREPEATABLE READ以上に設定すれば良い
こんな時はどう動く?
SELECTの処理が猛烈に重くて途中でUPDATEされた場合
UPDATEされた結果が使われてしまうはず。試したことはない